/****************************************************************************
 * NetSystem.h
 *
 * Clase NetSystem
 *
 * Autor: José Mª Arnau
 * Fecha: 26-10-06
 * Descripción: La clase CNetSystem permite la comunicación en red entre un servidor
 *              y varios clientes.   
 *
 ***************************************************************************/

#ifndef __INPUT_SYSTEM_INCLUDED__
#define __INPUT_SYSTEM_INCLUDED__

#include <SDL/SDL.h>
#include <SDL_net/SDL_net.h>

class CNetSystem {
	private:
		IPaddress ip;
		TCPsocket socket;

	public:
		CNetSystem();
		~CNetSystem();

		/********** Funciones para el servidor *********/
		bool bind(Uint16 port);                              /* Para que el servidor escuche el puerto indicado */
		TCPsocket accept();                                  /* Para capturar las conexiones de los clientes */

		/********** Funciones para el cliente **********/
		bool connect(const char * host, Uint16 port);        /* Para conectarse al servidor */

		/********** Funciones para cliente y servidor **/
		int send(const char * msg);                          /* Para enviar datos */
		int send(TCPsocket sock, const char * msg);          /* Para enviar datos especificando el socket (servidor multihilo) */
		int receive(char buffer[], int len);                 /* Para recibir datos */
		int receive(TCPsocket sock, char buffer[], int len); /* Para recibir datos especificando el socket (servidor multihilo) */
		void close();										 /* Para cerrar la conexión */	
		void close(TCPsocket sock);                          /* Para cerrar una conexión especificando el socket (servidor multihilo) */ 
};

#endif
